package dto

import "time"

// ListCommentReq 评价列表请求
type ListCommentReq struct {
	ProductId string `form:"product_id" binding:"required"`             // 商品ID
	Score     int    `form:"score"`                                     // 评分筛选：0全部 1-5对应分数
	Page      int    `form:"page" binding:"required,min=1"`             // 页码
	PageSize  int    `form:"page_size" binding:"required,min=1,max=50"` // 每页大小
}

// CommentItem 评价列表项
type CommentItem struct {
	Id         int64     `json:"id"`          // 评价ID
	UserId     int64     `json:"user_id"`     // 用户ID
	UserName   string    `json:"user_name"`   // 用户名称
	UserAvatar string    `json:"user_avatar"` // 用户头像
	Content    string    `json:"content"`     // 评价内容
	Images     []string  `json:"images"`      // 评价图片
	Score      int       `json:"score"`       // 综合评分
	Anonymous  int       `json:"anonymous"`   // 是否匿名
	ReplyCount int       `json:"reply_count"` // 回复数
	LikeCount  int       `json:"like_count"`  // 点赞数
	TagRatings []TagRate `json:"tag_ratings"` // 标签评分
	CreateTime time.Time `json:"create_time"` // 创建时间
}

// TagRate 标签评分
type TagRate struct {
	TagId   string `json:"tag_id"`   // 标签ID
	TagName string `json:"tag_name"` // 标签名称
	Score   int    `json:"score"`    // 评分：1-5
}

// ListCommentResp 评价列表响应
type ListCommentResp struct {
	Total     int64         `json:"total"`      // 总数
	List      []CommentItem `json:"list"`       // 评价列表
	ScoreStat ScoreStat     `json:"score_stat"` // 评分统计
	TagsStat  []TagStat     `json:"tags_stat"`  // 标签统计
	Page      int           `json:"page"`       // 当前页码
	PageSize  int           `json:"page_size"`  // 每页大小
}

// ScoreStat 评分统计
type ScoreStat struct {
	AvgScore    float64 `json:"avg_score"`    // 平均分
	TotalCount  int64   `json:"total_count"`  // 总评价数
	Score5Count int64   `json:"score5_count"` // 5分数量
	Score4Count int64   `json:"score4_count"` // 4分数量
	Score3Count int64   `json:"score3_count"` // 3分数量
	Score2Count int64   `json:"score2_count"` // 2分数量
	Score1Count int64   `json:"score1_count"` // 1分数量
}

// TagStat 标签统计
type TagStat struct {
	TagId      string  `json:"tag_id"`      // 标签ID
	TagName    string  `json:"tag_name"`    // 标签名称
	AvgScore   float64 `json:"avg_score"`   // 平均分
	TotalCount int     `json:"total_count"` // 评价总数
	GoodCount  int     `json:"good_count"`  // 好评数量(4-5分)
	GoodRate   float64 `json:"good_rate"`   // 好评率
}
